home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1994 Michael D. Bayne.
- * All rights reserved.
- *
- * Please see the documentation accompanying the distribution for distribution
- * and disclaimer information.
- */
-
- #include <exec/memory.h>
- #include <string.h>
- #include <stdlib.h>
-
- #include "includes.h"
- #include "libraries.h"
- #include "protos/protos.h"
-
- STRPTR defTTs[] = {
- "DONOTWAIT", "CX_PRIORITY=", "CX_POPUP=", "CX_POPKEY=", "BLANKKEY=",
- "TIMEOUT=", "BLANKER=", "BLANKERDIR=", "LEFT=", "TOP=", "REPLACE=",
- "BLANKCORNER=", "DONTCORNER=" };
-
- #define NUMTOOLTYPES ( sizeof( defTTs ) / sizeof( STRPTR ))
-
- BYTE *cornerStrings[] = {
- "NONE", "UPPERLEFT", "UPPERRIGHT", "LOWERRIGHT", "LOWERLEFT" };
-
- BlankerPrefs PrefsRec = { 1, TRUE, 600, 0L, 0L, "Alt Help", "Alt Delete",
- "Random", "Blankers", 0L, 0L, 10L };
-
- STRPTR longToStr( LONG num )
- {
- static BYTE out[32];
- LONG i = 32, j;
-
- if( !num )
- return "0";
-
- while( num )
- {
- out[--i] = num % 10;
- num /= 10;
- }
- for( j = 0; j < 32 - i; j++ )
- out[j] = '0' + out[i+j];
- out[j] = 0;
-
- return out;
- }
-
- STRPTR ConsTT( STRPTR DefStr, STRPTR Value )
- {
- STRPTR NewToolType;
-
- if( !DefStr || !Value )
- return 0L;
-
- if( NewToolType = AllocVec( strlen(DefStr)+strlen(Value)+1, MEMF_CLEAR ))
- {
- strcpy( NewToolType, DefStr );
- strcat( NewToolType, Value );
-
- return NewToolType;
- }
-
- return 0L;
- }
-
- VOID SaveDefaultPrefs( BlankerPrefs *bPO )
- {
- BYTE *toolTypes[NUMTOOLTYPES+1], **oldToolTypes;
- struct DiskObject *bDO;
- LONG i;
-
- toolTypes[0x0] = ConsTT( defTTs[0], "" );
- toolTypes[0x1] = ConsTT( defTTs[1], longToStr( bPO->bp_Priority ));
- toolTypes[0x2] = ConsTT( defTTs[2], bPO->bp_PopUp ? "YES" : "NO" );
- toolTypes[0x3] = ConsTT( defTTs[3], bPO->bp_PopKey );
- toolTypes[0x4] = ConsTT( defTTs[4], bPO->bp_BlankKey );
- toolTypes[0x5] = ConsTT( defTTs[5], longToStr( bPO->bp_Timeout/10 ));
- toolTypes[0x6] = ConsTT( defTTs[6], bPO->bp_Blanker );
- toolTypes[0x7] = ConsTT( defTTs[7], bPO->bp_Dir );
- toolTypes[0x8] = ConsTT( defTTs[8], longToStr( bPO->bp_Left ));
- toolTypes[0x9] = ConsTT( defTTs[9], longToStr( bPO->bp_Top ));
- toolTypes[0xA] = ConsTT( defTTs[10], bPO->bp_Flags&BF_REPLACE?"YES":"NO" );
- toolTypes[0xB] = ConsTT( defTTs[11], cornerStrings[bPO->bp_BlankCorner] );
- toolTypes[0xC] = ConsTT( defTTs[12], cornerStrings[bPO->bp_DontCorner] );
- toolTypes[NUMTOOLTYPES] = NULL;
-
- if( bDO = GetDiskObject( "PROGDIR:Garshneblanker" ))
- {
- oldToolTypes = bDO->do_ToolTypes;
- bDO->do_ToolTypes = toolTypes;
- PutDiskObject( "PROGDIR:Garshneblanker", bDO );
- bDO->do_ToolTypes = oldToolTypes;
- FreeDiskObject( bDO );
- }
-
- for( i = 0; i < NUMTOOLTYPES; i++ )
- if( toolTypes[i] )
- FreeVec( toolTypes[i] );
- }
-
- BlankerPrefs *LoadDefaultPrefs( VOID )
- {
- struct DiskObject *bDO;
-
- if( bDO = GetDiskObject( "PROGDIR:Garshneblanker" ))
- {
- STRPTR tooltype;
-
- if( tooltype = FindToolType( bDO->do_ToolTypes, "CX_PRIORITY" ))
- PrefsRec.bp_Priority = atoi( tooltype );
- if( tooltype = FindToolType( bDO->do_ToolTypes, "CX_POPUP" ))
- PrefsRec.bp_PopUp = ( LONG )MatchToolValue( tooltype, "YES" );
- if( tooltype = FindToolType( bDO->do_ToolTypes, "CX_POPKEY" ))
- strcpy( PrefsRec.bp_PopKey, tooltype );
- if( tooltype = FindToolType( bDO->do_ToolTypes, "BLANKKEY" ))
- strcpy( PrefsRec.bp_BlankKey, tooltype );
- if( tooltype = FindToolType( bDO->do_ToolTypes, "TIMEOUT" ))
- PrefsRec.bp_Timeout = 10 * atoi( tooltype );
- if( tooltype = FindToolType( bDO->do_ToolTypes, "BLANKER" ))
- strcpy( PrefsRec.bp_Blanker, tooltype );
- if( tooltype = FindToolType( bDO->do_ToolTypes, "BLANKERDIR" ))
- strcpy( PrefsRec.bp_Dir, tooltype );
- if( tooltype = FindToolType( bDO->do_ToolTypes, "LEFT" ))
- PrefsRec.bp_Left = atoi( tooltype );
- if( tooltype = FindToolType( bDO->do_ToolTypes, "TOP" ))
- PrefsRec.bp_Top = atoi( tooltype );
- if( tooltype = FindToolType( bDO->do_ToolTypes, "REPLACE" ))
- PrefsRec.bp_Flags |=
- ( MatchToolValue( tooltype, "YES" ) ? BF_REPLACE : 0L );
- if( tooltype = FindToolType( bDO->do_ToolTypes, "BLANKCORNER" ))
- {
- if( MatchToolValue( tooltype, "UPPERLEFT" ))
- PrefsRec.bp_BlankCorner = BC_UPPERLEFT;
- else if( MatchToolValue( tooltype, "UPPERRIGHT" ))
- PrefsRec.bp_BlankCorner = BC_UPPERRIGHT;
- else if( MatchToolValue( tooltype, "LOWERRIGHT" ))
- PrefsRec.bp_BlankCorner = BC_LOWERRIGHT;
- else if( MatchToolValue( tooltype, "LOWERLEFT" ))
- PrefsRec.bp_BlankCorner = BC_LOWERLEFT;
- }
- if( tooltype = FindToolType( bDO->do_ToolTypes, "DONTCORNER" ))
- {
- if( MatchToolValue( tooltype, "UPPERLEFT" ))
- PrefsRec.bp_DontCorner = BC_UPPERLEFT;
- else if( MatchToolValue( tooltype, "UPPERRIGHT" ))
- PrefsRec.bp_DontCorner = BC_UPPERRIGHT;
- else if( MatchToolValue( tooltype, "LOWERRIGHT" ))
- PrefsRec.bp_DontCorner = BC_LOWERRIGHT;
- else if( MatchToolValue( tooltype, "LOWERLEFT" ))
- PrefsRec.bp_DontCorner = BC_LOWERLEFT;
- }
- FreeDiskObject( bDO );
- }
-
- return &PrefsRec;
- }
-
- LONG EntriesInList( struct List *List )
- {
- struct Node *Counter;
- LONG Entries;
-
- for( Counter = List->lh_Head, Entries = 0; Counter->ln_Succ;
- Counter = Counter->ln_Succ )
- if( Counter->ln_Name[0] != '{' )
- Entries++;
-
- return Entries;
- }
-
- STRPTR RandomModule( VOID )
- {
- LONG i = EntriesInList( BlankerEntries ) - 1;
- LONG Entry = RangeRand( i );
- struct Node *TmpNode;
-
- if( !i )
- return "None";
-
- for( TmpNode = BlankerEntries->lh_Head; TmpNode->ln_Name[0] == '{';
- TmpNode = TmpNode->ln_Succ );
-
- for( i = 0; i < Entry; TmpNode = TmpNode->ln_Succ )
- if( TmpNode->ln_Name[0] != '{' )
- i++;
-
- for( ; TmpNode->ln_Name[0] == '{'; TmpNode = TmpNode->ln_Succ );
-
- return TmpNode->ln_Name;
- }
-